import Step from 'wizard/models/step';
import WizardField from 'wizard/models/wizard-field';
import { ajax } from 'wizard/lib/ajax';
import computed from 'ember-addons/ember-computed-decorators';

const Wizard = Ember.Object.extend({
  @computed('steps.length')
  totalSteps: length => length,

  getTitle() {
    const titleStep = this.get('steps').findBy('id', 'forum-title');
    if (!titleStep) { return; }
    return titleStep.get('fieldsById.title.value');
  },

  getLogoUrl() {
    const logoStep = this.get('steps').findBy('id', 'logos');
    if (!logoStep) { return; }
    return logoStep.get('fieldsById.logo_url.value');

  },

  // A bit clunky, but get the current colors from the appropriate step
  getCurrentColors() {
    const colorStep = this.get('steps').findBy('id', 'colors');
    if (!colorStep) { return; }

    const themeChoice = colorStep.get('fieldsById.theme_id');
    if (!themeChoice) { return; }

    const themeId = themeChoice.get('value');
    if (!themeId) { return; }

    const choices = themeChoice.get('choices');
    if (!choices) { return; }

    const option = choices.findBy('id', themeId);
    if (!option) { return; }

    return option.data.colors;
  }

});

export function findWizard() {
  return ajax({ url: '/wizard.json' }).then(response => {
    const wizard = response.wizard;
    wizard.steps = wizard.steps.map(step => {
      const stepObj = Step.create(step);
      stepObj.fields = stepObj.fields.map(f => WizardField.create(f));
      return stepObj;
    });

    return Wizard.create(wizard);
  });
}
